package com.hxzy.controller;

import com.hxzy.exceptions.MyException;
import com.hxzy.pojo.Dept;
import com.hxzy.pojo.Emp;
import com.hxzy.pojo.Result;
import com.hxzy.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author wzm
 * @create 2024-03-04 15:33
 * project_name:JavaWeb2401
 * @Description
 */
//部门控制类

//@Scope("prototype")
@Slf4j //注解输对象更方便
@RestController
@RequestMapping("/depts")
@Lazy
public class DeptController {
    //引入lombok的日志输出对象
//   private static Logger log = LoggerFactory.getLogger(DeptController.class);

    @Autowired
    private DeptService deptService;


    //构造方法
    public DeptController() {
        System.out.println("bean对象被创建了");
    }


    //表示请求的地址是depts 请求的方式是get请求
    //@RequestMapping(value = "/depts",method = RequestMethod.GET)
    //@GetMapping("/depts") //相当于@RequestMapping(value = "/depts",method = RequestMethod.GET)
    @GetMapping //相当于@RequestMapping(value = "/depts",method = RequestMethod.GET)
    public Result list(){
        //调用service方法查询全部部门
        List<Dept> deptList = deptService.list();
        return Result.success(deptList);//返回结果
    }

    //该接口用于根据ID删除部门数据 (删除部门需要删除部门下所有的员工)
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) throws Exception {
        log.info("删除部门数据id为："+id);
        //调用service功能
        deptService.delete(id);
        //响应
        return  Result.success();
    }

    //接口用于添加部门数据
    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门的信息:{}",dept);

       /* int i= 10/0;*/

//        if(1 == 1){
//            //如果出现了这种问题要抛出一个自定义异常
//            throw new MyException("这里是我们公司自定义的一个异常，你犯错了，不好意思");
//        }

        deptService.insert(dept);
        return Result.success();

    }

    //该接口用于根据ID查询部门数据
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        log.info("根据id查询的id为：{}",id);
        Dept dept = deptService.getById(id);
        return Result.success(dept);

    }

    //该接口用于修改部门数据
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("修改部门的数据内容为，{}",dept);
        deptService.update(dept);
        return Result.success();
    }


}
